package top.whysu.edevice.service.manage;

import org.springframework.transaction.annotation.Transactional;
import top.whysu.edevice.dto.manage.NodeAddDTO;
import top.whysu.edevice.dto.manage.NodeEditDTO;
import top.whysu.edevice.po.manage.ManageTreePO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 树结构
 */
public interface ManageTreeService {

    /**
     * 根据条件获取树结构集合
     *
     * @param params 查询参数
     * @return 树结构列表
     */
    List<ManageTreePO> selectTreeNodeByCondition(Map<String, Object> params);

    /**
     * 新增节点
     *
     * @param nodeAddDTO 节点信息
     * @return 节点Id
     */
    @Transactional
    BigDecimal wholeAddNode(NodeAddDTO nodeAddDTO);

    /**
     * 更新节点（加锁）
     *
     * @param nodeEditDTO 编辑对象
     */
    @Transactional
    void wholeModifyNode(NodeEditDTO nodeEditDTO);

    /**
     * 删除节点
     */
    @Transactional
    void wholeDeleteNode(BigDecimal id);
}